// 2014-02-05 Tyrghen
//---------------------------------------------
// Usage:
//  100 call edt_fnc_status
//  [100] call edt_fnc_status
//---------------------------------------------
// Purpose:
// Returns the current status of the given objective. Within the TMF you can set the status of "numerical" objectives using edt_fnc_completed and edt_fnc_canceled.
// Those objectives use numerical values for the ease of use. If you want to work with text names, use edt_fnc_setVar and edt_fnc_getVar.
// Internally the numerical objectives are stored as regular vars in the format: tmf_edt_{value} so they can be read and written with edt_fnc_setVar and edt_fnc_getVar too.
// They can also be used as JIP variables for the other functions like:
// [comm_tower,getPos comm_tower,"tmf_edt_100"] call edt_fnc_destroy;
// They can also be used to trigger task completion:
// ["STR_TASK_DESTROY","Created","STR_TASK_DESTROY_DESC","","tmf_edt_100"] call edt_fnc_task;
// 
// Parameters:
// - The ID of the objective
//
// Returns:
// The status of that objective as a boolean
//---------------------------------------------
// Objectif:
// Renvoie le statut actuel d'un objectif donné. Dans le TMF, on peut modifier le statut d'un objectif "numérique" en utilisant edt_fnc_completed et edt_fnc_canceled.
// Ces objectifs utilisent des valeurs numériques par facilité. Si vous préférez travailler avec des textes, utilisez edt_fnc_setVar et edt_fnc_getVar.
// En interne, les objectifs "numériques" sont stockés comme des variables classiques sous la forme: tmf_edt_{valeur}, donc ils peuvent être lus ou modifiés en utilisant edt_fnc_getVar et edt_fnc_setVar.
// Ils peuvent aussi être utilisés comme variables JIP dans les autres fonctions de la manière suivante:
// [tour_comm,getPos tour_comm,"tmf_edt_100"] call edt_fnc_destroy;
// Ils peuvent donc aussi être utilisé pour gérer l'achèvement de tâches:
// ["STR_TACHE_DETRUIRE","Created","STR_TACHE_DETRUIRE_DESC","","tmf_edt_100"] call edt_fnc_task;
//
// Paramètres:
// - L'ID de l'objectif
//
// Renvoie:
// Le statut de l'objectif en tant que booléen
//---------------------------------------------

//#define __FORCE_TRACE__
//#define __FORCE_DEBUG__
//#define __FORCE_INFO__
#define THIS_FILE "editor\fn_status.sqf"
#include <tmf_constants.h>
#include <tmf_macros.h>

TRACE_1("Start",_this);
TMFPROFILERSTART;

private ["_param","_objective_name","_return"];
_return = false;

_param = _this;
if (IS_ARRAY(_this)) then {
	if (count _this > 0) then {
		_return = true;
		{
			if (IS_SCALAR(_x)) then {
				_objective_name = format [TMF_EDITOR_OBJECTIVE,_x];
				_return = _return && ([TMF_SERVER_INSTANCE_ID,_objective_name,false] call FFUNC(getMissionVar));
			} else {
				_return = false;
			};
			if (!_return) exitWith {};
		} foreach _this;
	};
} else {
	if (IS_SCALAR(_param)) then {
		_objective_name = format [TMF_EDITOR_OBJECTIVE,_param];
		_return = [TMF_SERVER_INSTANCE_ID,_objective_name,false] call FFUNC(getMissionVar);
	};
};
TRACE_1("End",_return);
TMFPROFILERSTOP;
_return;